package com.example.controller;

import com.example.Util.DbUtil;
import com.example.dao.UserDao;
import com.example.entity.UserInfo;
import com.mysql.cj.util.StringUtils;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;
import java.sql.Connection;

@WebServlet("/login")
public class LoginServlet extends HttpServlet {

    DbUtil dbUtil=new DbUtil();//实例化DbUtil
    UserDao userDAO=new UserDao();//实例化持久层
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //删去父类调用，自己处理请求逻辑
        //1、获取参数
        String username=request.getParameter("userName");
        String password=request.getParameter("passWord");
        //打印
        System.out.println("username: "+username);
        System.out.println("password: "+password);
        //2、验证参数  数据合法性（防呆设计）
        //2.1、判断是否为空
        //2.2、正则表达式判断数据合法性
        //2.3、验证用户真实性
        if(StringUtils.isNullOrEmpty(username)|| StringUtils.isNullOrEmpty(password)){
            //给出错误信息提示用户输入正确的信息
            //设置相应属性，返回前台
            request.setAttribute("error","用户名或密码为空！");//判空
            //把当前的请求转发回用户，告知填写信息有误，通过请求转发的形式
            request.getRequestDispatcher("index.jsp").forward(request,response);//合法性
        }
        //校验
        //建立数据库连接--->查询--->if true——业务主页  if false——告知错误
        UserInfo userInfo=new UserInfo(username, password);//封装模型userInfo
        Connection con=null;
        try {
            con=dbUtil.getCon();//创建连接
            UserInfo rsUser=userDAO.login(con,userInfo);//执行查询  交由持久化层（业务层）
            /*
            * 空值--->提示用户错误信息  index.jsp
            * 有值--->跳转首页  设置用户信息
            * */
            //设置相应属性，返回前台
            if(rsUser==null){
                request.setAttribute("error", "用户名或密码错误！");//判空
                //把当前的请求转发回用户，告知填写信息有误，通过请求转发的形式
                request.getRequestDispatcher("index.jsp").forward(request, response);//合法性
            }else{
                request.getSession().setAttribute("userInfo",rsUser);//Session  设置用户信息
                response.sendRedirect(request.getContextPath()+"/main.jsp");//跳转首页  跳转到main.jsp  转发重定向方式
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            dbUtil.closeCon(con);//关闭连接
        }

    }
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        super.doGet(request, response);
    }
}
